/*
	File:				IEntity.h
	Course:		SGP 1208
	Author:		Kori Po
	Purpose:	Abstract Base Class for all in game objects
*/

#pragma once

#define WIN32_LEAN_AND_MEAN
#include <windows.h>

// Enumeration of object types
//enum ObjectType	{ OBJ_BASE, OBJ_PLAYER, OBJ_ENEMY, OBJ_ITEM, OBJ_ABILITY, TOTAL_COUNT };

class IEntity
{
public:
	virtual ~IEntity( void )						= 0
	{	/*	do nothing	*/	}

	// Pure virtual methods MUST be overriden
	virtual void	Update( float fElapsedTime )		= 0;
	virtual void	Render( void )						= 0;
	virtual float	GetX		( void )	const					= 0;
	virtual float	GetY		( void )	const					= 0;
	virtual int		GetType( void ) const				= 0;
	virtual RECT GetRect( void ) const				= 0;
	virtual bool	CheckCollision( IEntity* pOther )	= 0;

	// Reference counting
	virtual void AddRef( void )						= 0;
	virtual void Release( void )					= 0;
};
